package com.ruoyi.system.dto;

import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.time.LocalDate;
import java.util.List;

/**
 * 施工项目新增/修改DTO
 */
@Data
public class ContructionProjectAddOrUpdateDTO {

    /** 项目ID（修改时必传，新增时不传） */
    private Long id;

    /** 绑定的立项项目编号（双向绑定） */
    private String approvalProjectCode;

    /** 工地项目名称（如“XX小区A户型精装”） */
    @NotBlank(message = "工地项目名称不能为空")
    @Size(max = 50, message = "工地项目名称最大长度为50字符")
    private String projectName;

    /** 客户姓名 */
    @NotBlank(message = "客户姓名不能为空")
    @Size(max = 20, message = "客户姓名最大长度为20字符")
    private String customerName;

    /** 客户联系方式（手机号） */
    @NotBlank(message = "客户联系方式不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "请输入有效的11位手机号")
    private String customerPhone;

    /** 工地详细地址（精确到门牌号） */
    @NotBlank(message = "工地地址不能为空")
    @Size(max = 100, message = "工地地址最大长度为100字符")
    private String projectAddress;

    /** 开工日期（需≥当前日期） */
    @NotNull(message = "开工日期不能为空")
    private LocalDate startDate;

    /** 预计入住日期（需>开工日期） */
    private LocalDate expectedCheckinDate;

    /** 选择的施工阶段ID列表（关联施工阶段配置） */
    @NotNull(message = "请至少选择一项施工范围")
    private List<Long> stageIdList;

    /** 备注（特殊施工要求等） */
    @Size(max = 500, message = "备注最大长度为500字符")
    private String remark;
}